package com.lmabbe.common.global.context;

import com.lmabbe.common.global.context.metadata.client.OauthClient;
import com.lmabbe.common.global.context.metadata.dict.SystemDict;
import com.lmabbe.common.global.context.metadata.param.SystemParam;
import com.lmabbe.common.global.context.metadata.tenant.TenantInfo;
import com.lmabbe.common.global.dict.BaseDict;

import java.util.List;

/**
 * 租户运行的元数据
 *
 * @author lmabbe
 */
public interface LmabbeMetadata {

    /**
     * 获取当前租户
     *
     * @return 租户基础信息
     */
    TenantInfo currentTenant();

    /**
     * 获取当前租户认证客户端
     *
     * @return 租户认证客户端信息
     */
    List<OauthClient> currentTenantClient();

    /**
     * 获取当前租户系统参数
     *
     * @return 租户系统参数
     */
    List<SystemParam> currentSysParam();

    /**
     * 获取当前租户字典
     *
     * @return 租户字典信息
     */
    List<SystemDict> currentTenantDict();

    /**
     * 根据key获取系统参数
     *
     * @param key 参数的Key
     * @return 参数的值
     */
    String getParamByKey(String key);

    /**
     * 根据字典的Key获取字典值
     *
     * @param key 字典的key
     * @return 字典值得对象
     */
    BaseDict getDictValByKey(String key);
}
